// pages/calendar/calendar.js

const app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    title: '',
    imgUrl: '',
    touch: {
      distance: 0,
      scale: 1,
      baseWidth: null,
      baseHeight: null,
      scaleWidth: null,
      scaleHeight: null
    },
    block: false,
    intro: '轻点查看图片，长按下载',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    let that = this;
    wx.showLoading({
      title: '正在加载...',
    });

    wx.request({
      url: app.globalData.apiAccessSuffix + '/query/calendar',
      dataType: 'json',
      success: function(res) {
        let obj = res.data;
        console.log(obj);
        if (obj.code === 1) {
          that.setData({
            imgUrl: obj.msg,
          })
        } else {
          wx.showToast({
            title: obj.msg,
            duration: 2000
          })
        }
        wx.hideLoading();
      },
      complete: function() {
        wx.hideLoading();
      }
    })
  },

  displayImage: function(e) {
    if (this.data.lock) {
      return;
    }
    let url = this.data.imgUrl;
    wx.previewImage({
      current: url, // 当前显示图片的http链接
      urls: [url] // 需要预览的图片http链接列表
    })
  },
  touchend: function() {
    if (this.data.lock) {
      //开锁
      setTimeout(() => {
        this.setData({
          lock: false
        });
      }, 300);
    }
  },
  goCanendarChoice: function(e) {
    this.setData({
      lock: true
    });
    let url = this.data.imgUrl;
    wx.showActionSheet({
      itemList: ['下载到本地', '关闭'],
      success(res) {
        switch (res.tapIndex) {
          case 0:
            wx.showLoading({
              title: '正在下载，请稍候',
            })
            wx.downloadFile({
              url: url,
              success(res) {
                wx.saveImageToPhotosAlbum({
                  filePath: res.tempFilePath,
                  success: function(res) {
                    wx.showToast({
                      title: '下载完成',
                      icon: 'success',
                      duration: 2000
                    });
                    wx.hideLoading();
                  },
                  fail: function(res) {
                    wx.showToast({
                      title: '下载失败',
                      icon: 'none',
                      duration: 1000
                    });
                    wx.hideLoading();
                  },

                });
              }
            });
            return;
          case 1:
            return;

        }
      },
      fail(res) {
      }
    })
  },
  touchstartCallback: function(e) {
    // 单手指缩放开始，也不做任何处理
    if (e.touches.length == 1) return
    console.log('双手指触发开始')
    // 注意touchstartCallback 真正代码的开始
    // 一开始我并没有这个回调函数，会出现缩小的时候有瞬间被放大过程的bug
    // 当两根手指放上去的时候，就将distance 初始化。
    let xMove = e.touches[1].clientX - e.touches[0].clientX;
    let yMove = e.touches[1].clientY - e.touches[0].clientY;
    let distance = Math.sqrt(xMove * xMove + yMove * yMove);
    this.setData({
      'touch.distance': distance,
    });
  },
  touchmoveCallback: function(e) {
    let touch = this.data.touch
    // 单手指缩放我们不做任何操作
    if (e.touches.length == 1) return

    let xMove = e.touches[1].clientX - e.touches[0].clientX;
    let yMove = e.touches[1].clientY - e.touches[0].clientY;
    // 新的 ditance
    let distance = Math.sqrt(xMove * xMove + yMove * yMove);
    let distanceDiff = distance - touch.distance;
    let newScale = touch.scale + 0.005 * distanceDiff
    // 为了防止缩放得太大，所以scale需要限制，同理最小值也是
    if (newScale >= 2) {
      newScale = 2
    }
    if (newScale <= 0.6) {
      newScale = 0.6
    }
    let scaleWidth = newScale * touch.baseWidth
    let scaleHeight = newScale * touch.baseHeight
    // 赋值 新的 => 旧的
    this.setData({
      'touch.distance': distance,
      'touch.scale': newScale,
      'touch.scaleWidth': scaleWidth,
      'touch.scaleHeight': scaleHeight,
      'touch.diff': distanceDiff
    })
  },
  bindload: function(e) {
    // bindload 这个api是<image>组件的api类似<img>的onload属性
    this.setData({
      'touch.baseWidth': e.detail.width,
      'touch.baseHeight': e.detail.height,
      'touch.scaleWidth': e.detail.width,
      'touch.scaleHeight': e.detail.height
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})